home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_xemacs.idb / usr / freeware / lib / xemacs-20.4 / info / gnus.info-8.z / gnus.info-8
Encoding:
GNU Info File  |  1998-05-21  |  47.1 KB  |  1,288 lines

  1. This is Info file ../info/gnus.info, produced by Makeinfo version 1.68
  2. from the input file gnus.texi.
  3.  
  4.    This file documents Gnus, the GNU Emacs newsreader.
  5.  
  6.    Copyright (C) 1995,96 Free Software Foundation, Inc.
  7.  
  8.    Permission is granted to make and distribute verbatim copies of this
  9. manual provided the copyright notice and this permission notice are
  10. preserved on all copies.
  11.  
  12.    Permission is granted to copy and distribute modified versions of
  13. this manual under the conditions for verbatim copying, provided also
  14. that the entire resulting derived work is distributed under the terms
  15. of a permission notice identical to this one.
  16.  
  17.    Permission is granted to copy and distribute translations of this
  18. manual into another language, under the above conditions for modified
  19. versions.
  20.  
  21. 
  22. File: gnus.info,  Node: Global Score Files,  Next: Kill Files,  Prev: Reverse Scoring,  Up: Scoring
  23.  
  24. Global Score Files
  25. ==================
  26.  
  27.    Sure, other newsreaders have "global kill files".  These are usually
  28. nothing more than a single kill file that applies to all groups, stored
  29. in the user's home directory.  Bah!  Puny, weak newsreaders!
  30.  
  31.    What I'm talking about here are Global Score Files.  Score files from
  32. all over the world, from users everywhere, uniting all nations in one
  33. big, happy score file union!  Ange-score!  New and untested!
  34.  
  35.    All you have to do to use other people's score files is to set the
  36. `gnus-global-score-files' variable.  One entry for each score file, or
  37. each score file directory.  Gnus will decide by itself what score files
  38. are applicable to which group.
  39.  
  40.    Say you want to use the score file
  41. `/ftp@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE' and all score
  42. files in the `/ftp@ftp.some-where:/pub/score' directory:
  43.  
  44.      (setq gnus-global-score-files
  45.            '("/ftp@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE"
  46.              "/ftp@ftp.some-where:/pub/score/"))
  47.  
  48.    Simple, eh?  Directory names must end with a `/'.  These directories
  49. are typically scanned only once during each Gnus session.  If you feel
  50. the need to manually re-scan the remote directories, you can use the
  51. `gnus-score-search-global-directories' command.
  52.  
  53.    Note that, at present, using this option will slow down group entry
  54. somewhat.  (That is--a lot.)
  55.  
  56.    If you want to start maintaining score files for other people to use,
  57. just put your score file up for anonymous ftp and announce it to the
  58. world.  Become a retro-moderator!  Participate in the retro-moderator
  59. wars sure to ensue, where retro-moderators battle it out for the
  60. sympathy of the people, luring them to use their score files on false
  61. premises!  Yay!  The net is saved!
  62.  
  63.    Here are some tips for the would-be retro-moderator, off the top of
  64. my head:
  65.  
  66.    * Articles heavily crossposted are probably junk.
  67.  
  68.    * To lower a single inappropriate article, lower by `Message-ID'.
  69.  
  70.    * Particularly brilliant authors can be raised on a permanent basis.
  71.  
  72.    * Authors that repeatedly post off-charter for the group can safely
  73.      be lowered out of existence.
  74.  
  75.    * Set the `mark' and `expunge' atoms to obliterate the nastiest
  76.      articles completely.
  77.  
  78.    * Use expiring score entries to keep the size of the file down.  You
  79.      should probably have a long expiry period, though, as some sites
  80.      keep old articles for a long time.
  81.  
  82.    ... I wonder whether other newsreaders will support global score
  83. files in the future.  *Snicker*.  Yup, any day now, newsreaders like
  84. Blue Wave, xrn and 1stReader are bound to implement scoring.  Should we
  85. start holding our breath yet?
  86.  
  87. 
  88. File: gnus.info,  Node: Kill Files,  Next: Converting Kill Files,  Prev: Global Score Files,  Up: Scoring
  89.  
  90. Kill Files
  91. ==========
  92.  
  93.    Gnus still supports those pesky old kill files.  In fact, the kill
  94. file entries can now be expiring, which is something I wrote before
  95. Daniel Quinlan thought of doing score files, so I've left the code in
  96. there.
  97.  
  98.    In short, kill processing is a lot slower (and I do mean *a lot*)
  99. than score processing, so it might be a good idea to rewrite your kill
  100. files into score files.
  101.  
  102.    Anyway, a kill file is a normal `emacs-lisp' file.  You can put any
  103. forms into this file, which means that you can use kill files as some
  104. sort of primitive hook function to be run on group entry, even though
  105. that isn't a very good idea.
  106.  
  107.    Normal kill files look like this:
  108.  
  109.      (gnus-kill "From" "Lars Ingebrigtsen")
  110.      (gnus-kill "Subject" "ding")
  111.      (gnus-expunge "X")
  112.  
  113.    This will mark every article written by me as read, and remove the
  114. marked articles from the summary buffer.  Very useful, you'll agree.
  115.  
  116.    Other programs use a totally different kill file syntax.  If Gnus
  117. encounters what looks like a `rn' kill file, it will take a stab at
  118. interpreting it.
  119.  
  120.    Two summary functions for editing a GNUS kill file:
  121.  
  122. `M-k'
  123.      Edit this group's kill file (`gnus-summary-edit-local-kill').
  124.  
  125. `M-K'
  126.      Edit the general kill file (`gnus-summary-edit-global-kill').
  127.  
  128.    Two group mode functions for editing the kill files:
  129.  
  130. `M-k'
  131.      Edit this group's kill file (`gnus-group-edit-local-kill').
  132.  
  133. `M-K'
  134.      Edit the general kill file (`gnus-group-edit-global-kill').
  135.  
  136.    Kill file variables:
  137.  
  138. `gnus-kill-file-name'
  139.      A kill file for the group `soc.motss' is normally called
  140.      `soc.motss.KILL'.  The suffix appended to the group name to get
  141.      this file name is detailed by the `gnus-kill-file-name' variable.
  142.      The "global" kill file (not in the score file sense of "global", of
  143.      course) is just called `KILL'.
  144.  
  145. `gnus-kill-save-kill-file'
  146.      If this variable is non-`nil', Gnus will save the kill file after
  147.      processing, which is necessary if you use expiring kills.
  148.  
  149. `gnus-apply-kill-hook'
  150.      A hook called to apply kill files to a group.  It is
  151.      `(gnus-apply-kill-file)' by default.  If you want to ignore the
  152.      kill file if you have a score file for the same group, you can set
  153.      this hook to `(gnus-apply-kill-file-unless-scored)'.  If you don't
  154.      want kill files to be processed, you should set this variable to
  155.      `nil'.
  156.  
  157. `gnus-kill-file-mode-hook'
  158.      A hook called in kill-file mode buffers.
  159.  
  160. 
  161. File: gnus.info,  Node: Converting Kill Files,  Next: GroupLens,  Prev: Kill Files,  Up: Scoring
  162.  
  163. Converting Kill Files
  164. =====================
  165.  
  166.    If you have loads of old kill files, you may want to convert them
  167. into score files.  If they are "regular", you can use the
  168. `gnus-kill-to-score.el' package; if not, you'll have to do it by hand.
  169.  
  170.    The kill to score conversion package isn't included in Gnus by
  171. default.  You can fetch it from
  172. `http://www.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score'.
  173.  
  174.    If your old kill files are very complex--if they contain more
  175. non-`gnus-kill' forms than not, you'll have to convert them by hand.
  176. Or just let them be as they are.  Gnus will still use them as before.
  177.  
  178. 
  179. File: gnus.info,  Node: GroupLens,  Next: Advanced Scoring,  Prev: Converting Kill Files,  Up: Scoring
  180.  
  181. GroupLens
  182. =========
  183.  
  184.    GroupLens is a collaborative filtering system that helps you work
  185. together with other people to find the quality news articles out of the
  186. huge volume of news articles generated every day.
  187.  
  188.    To accomplish this the GroupLens system combines your opinions about
  189. articles you have already read with the opinions of others who have done
  190. likewise and gives you a personalized prediction for each unread news
  191. article.  Think of GroupLens as a matchmaker.  GroupLens watches how you
  192. rate articles, and finds other people that rate articles the same way.
  193. Once it has found some people you agree with it tells you, in the form
  194. of a prediction, what they thought of the article.  You can use this
  195. prediction to help you decide whether or not you want to read the
  196. article.
  197.  
  198. * Menu:
  199.  
  200. * Using GroupLens::          How to make Gnus use GroupLens.
  201. * Rating Articles::          Letting GroupLens know how you rate articles.
  202. * Displaying Predictions::   Displaying predictions given by GroupLens.
  203. * GroupLens Variables::      Customizing GroupLens.
  204.  
  205. 
  206. File: gnus.info,  Node: Using GroupLens,  Next: Rating Articles,  Up: GroupLens
  207.  
  208. Using GroupLens
  209. ---------------
  210.  
  211.    To use GroupLens you must register a pseudonym with your local Better
  212. Bit Bureau (BBB).  `http://www.cs.umn.edu/Research/GroupLens/bbb.html'
  213. is the only better bit in town at the moment.
  214.  
  215.    Once you have registered you'll need to set a couple of variables.
  216.  
  217. `gnus-use-grouplens'
  218.      Setting this variable to a non-`nil' value will make Gnus hook into
  219.      all the relevant GroupLens functions.
  220.  
  221. `grouplens-pseudonym'
  222.      This variable should be set to the pseudonym you got when
  223.      registering with the Better Bit Bureau.
  224.  
  225. `grouplens-newsgroups'
  226.      A list of groups that you want to get GroupLens predictions for.
  227.  
  228.    That's the minimum of what you need to get up and running with
  229. GroupLens.  Once you've registered, GroupLens will start giving you
  230. scores for articles based on the average of what other people think.
  231. But, to get the real benefit of GroupLens you need to start rating
  232. articles yourself.  Then the scores GroupLens gives you will be
  233. personalized for you, based on how the people you usually agree with
  234. have already rated.
  235.  
  236. 
  237. File: gnus.info,  Node: Rating Articles,  Next: Displaying Predictions,  Prev: Using GroupLens,  Up: GroupLens
  238.  
  239. Rating Articles
  240. ---------------
  241.  
  242.    In GroupLens, an article is rated on a scale from 1 to 5, inclusive.
  243. Where 1 means something like this article is a waste of bandwidth and 5
  244. means that the article was really good.  The basic question to ask
  245. yourself is, "on a scale from 1 to 5 would I like to see more articles
  246. like this one?"
  247.  
  248.    There are four ways to enter a rating for an article in GroupLens.
  249.  
  250. `r'
  251.      This function will prompt you for a rating on a scale of one to
  252.      five.
  253.  
  254. `k'
  255.      This function will prompt you for a rating, and rate all the
  256.      articles in the thread.  This is really useful for some of those
  257.      long running giant threads in rec.humor.
  258.  
  259.    The next two commands, `n' and `,' take a numerical prefix to be the
  260. score of the article you're reading.
  261.  
  262. `1-5 n'
  263.      Rate the article and go to the next unread article.
  264.  
  265. `1-5 ,'
  266.      Rate the article and go to the next unread article with the
  267.      highest score.
  268.  
  269.    If you want to give the current article a score of 4 and then go to
  270. the next article, just type `4 n'.
  271.  
  272. 
  273. File: gnus.info,  Node: Displaying Predictions,  Next: GroupLens Variables,  Prev: Rating Articles,  Up: GroupLens
  274.  
  275. Displaying Predictions
  276. ----------------------
  277.  
  278.    GroupLens makes a prediction for you about how much you will like a
  279. news article.  The predictions from GroupLens are on a scale from 1 to
  280. 5, where 1 is the worst and 5 is the best.  You can use the predictions
  281. from GroupLens in one of three ways controlled by the variable
  282. `gnus-grouplens-override-scoring'.
  283.  
  284.    There are three ways to display predictions in grouplens.  You may
  285. choose to have the GroupLens scores contribute to, or override the
  286. regular gnus scoring mechanism. override is the default; however, some
  287. people prefer to see the Gnus scores plus the grouplens scores.  To get
  288. the separate scoring behavior you need to set
  289. `gnus-grouplens-override-scoring' to `'separate'.  To have the
  290. GroupLens predictions combined with the grouplens scores set it to
  291. `'override' and to combine the scores set
  292. `gnus-grouplens-override-scoring' to `'combine'.  When you use the
  293. combine option you will also want to set the values for
  294. `grouplens-prediction-offset' and `grouplens-score-scale-factor'.
  295.  
  296.    In either case, GroupLens gives you a few choices for how you would
  297. like to see your predictions displayed.  The display of predictions is
  298. controlled by the `grouplens-prediction-display' variable.
  299.  
  300.    The following are legal values for that variable.
  301.  
  302. `prediction-spot'
  303.      The higher the prediction, the further to the right an `*' is
  304.      displayed.
  305.  
  306. `confidence-interval'
  307.      A numeric confidence interval.
  308.  
  309. `prediction-bar'
  310.      The higher the prediction, the longer the bar.
  311.  
  312. `confidence-bar'
  313.      Numerical confidence.
  314.  
  315. `confidence-spot'
  316.      The spot gets bigger with more confidence.
  317.  
  318. `prediction-num'
  319.      Plain-old numeric value.
  320.  
  321. `confidence-plus-minus'
  322.      Prediction +/- confidence.
  323.  
  324. 
  325. File: gnus.info,  Node: GroupLens Variables,  Prev: Displaying Predictions,  Up: GroupLens
  326.  
  327. GroupLens Variables
  328. -------------------
  329.  
  330. `gnus-summary-grouplens-line-format'
  331.      The summary line format used in GroupLens-enhanced summary
  332.      buffers.  It accepts the same specs as the normal summary line
  333.      format (*note Summary Buffer Lines::.).  The default is
  334.      `%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n'.
  335.  
  336. `grouplens-bbb-host'
  337.      Host running the bbbd server.  `grouplens.cs.umn.edu' is the
  338.      default.
  339.  
  340. `grouplens-bbb-port'
  341.      Port of the host running the bbbd server.  The default is 9000.
  342.  
  343. `grouplens-score-offset'
  344.      Offset the prediction by this value.  In other words, subtract the
  345.      prediction value by this number to arrive at the effective score.
  346.      The default is 0.
  347.  
  348. `grouplens-score-scale-factor'
  349.      This variable allows the user to magnify the effect of GroupLens
  350.      scores.  The scale factor is applied after the offset.  The
  351.      default is 1.
  352.  
  353. 
  354. File: gnus.info,  Node: Advanced Scoring,  Next: Score Decays,  Prev: GroupLens,  Up: Scoring
  355.  
  356. Advanced Scoring
  357. ================
  358.  
  359.    Scoring on Subjects and From headers is nice enough, but what if
  360. you're really interested in what a person has to say only when she's
  361. talking about a particular subject?  Or what if you really don't want to
  362. read what person A has to say when she's following up to person B, but
  363. want to read what she says when she's following up to person C?
  364.  
  365.    By using advanced scoring rules you may create arbitrarily complex
  366. scoring patterns.
  367.  
  368. * Menu:
  369.  
  370. * Advanced Scoring Syntax::     A definition.
  371. * Advanced Scoring Examples::   What they look like.
  372. * Advanced Scoring Tips::       Getting the most out of it.
  373.  
  374. 
  375. File: gnus.info,  Node: Advanced Scoring Syntax,  Next: Advanced Scoring Examples,  Up: Advanced Scoring
  376.  
  377. Advanced Scoring Syntax
  378. -----------------------
  379.  
  380.    Ordinary scoring rules have a string as the first element in the
  381. rule.  Advanced scoring rules have a list as the first element.  The
  382. second element is the score to be applied if the first element
  383. evaluated to a non-`nil' value.
  384.  
  385.    These lists may consist of three logical operators, one redirection
  386. operator, and various match operators.
  387.  
  388.    Logical operators:
  389.  
  390. `&'
  391. `and'
  392.      This logical operator will evaluate each of its arguments until it
  393.      finds one that evaluates to `false', and then it'll stop.  If all
  394.      arguments evaluate to `true' values, then this operator will return
  395.      `true'.
  396.  
  397. `|'
  398. `or'
  399.      This logical operator will evaluate each of its arguments until it
  400.      finds one that evaluates to `true'.  If no arguments are `true',
  401.      then this operator will return `false'.
  402.  
  403. `!'
  404. `not'
  405. `ΒΌ'
  406.      This logical operator only takes a single argument.  It returns the
  407.      logical negation of the value of its argument.
  408.  
  409.    There is an "indirection operator" that will make its arguments
  410. apply to the ancestors of the current article being scored.  For
  411. instance, `1-' will make score rules apply to the parent of the current
  412. article.  `2-' will make score rules apply to the grandparent of the
  413. current article.  Alternatively, you can write `^^', where the number
  414. of `^'s (carets) says how far back into the ancestry you want to go.
  415.  
  416.    Finally, we have the match operators.  These are the ones that do the
  417. real work.  Match operators are header name strings followed by a match
  418. and a match type.  A typical match operator looks like `("from" "Lars
  419. Ingebrigtsen" s)'.  The header names are the same as when using simple
  420. scoring, and the match types are also the same.
  421.  
  422. 
  423. File: gnus.info,  Node: Advanced Scoring Examples,  Next: Advanced Scoring Tips,  Prev: Advanced Scoring Syntax,  Up: Advanced Scoring
  424.  
  425. Advanced Scoring Examples
  426. -------------------------
  427.  
  428.    Let's say you want to increase the score of articles written by Lars
  429. when he's talking about Gnus:
  430.  
  431.      ((&
  432.        ("from" "Lars Ingebrigtsen")
  433.        ("subject" "Gnus"))
  434.       1000)
  435.  
  436.    Quite simple, huh?
  437.  
  438.    When he writes long articles, he sometimes has something nice to say:
  439.  
  440.      ((&
  441.        ("from" "Lars Ingebrigtsen")
  442.        (|
  443.         ("subject" "Gnus")
  444.         ("lines" 100 >)))
  445.       1000)
  446.  
  447.    However, when he responds to things written by Reig Eigil Logge, you
  448. really don't want to read what he's written:
  449.  
  450.      ((&
  451.        ("from" "Lars Ingebrigtsen")
  452.        (1- ("from" "Reig Eigir Logge")))
  453.       -100000)
  454.  
  455.    Everybody that follows up Redmondo when he writes about disappearing
  456. socks should have their scores raised, but only when they talk about
  457. white socks.  However, when Lars talks about socks, it's usually not
  458. very interesting:
  459.  
  460.      ((&
  461.        (1-
  462.         (&
  463.          ("from" "redmondo@.*no" r)
  464.          ("body" "disappearing.*socks" t)))
  465.        (! ("from" "Lars Ingebrigtsen"))
  466.        ("body" "white.*socks"))
  467.       1000)
  468.  
  469.    The possibilities are endless.
  470.  
  471. 
  472. File: gnus.info,  Node: Advanced Scoring Tips,  Prev: Advanced Scoring Examples,  Up: Advanced Scoring
  473.  
  474. Advanced Scoring Tips
  475. ---------------------
  476.  
  477.    The `&' and `|' logical operators do short-circuit logic.  That is,
  478. they stop processing their arguments when it's clear what the result of
  479. the operation will be.  For instance, if one of the arguments of an `&'
  480. evaluates to `false', there's no point in evaluating the rest of the
  481. arguments.  This means that you should put slow matches (`body',
  482. `header') last and quick matches (`from', `subject') first.
  483.  
  484.    The indirection arguments (`1-' and so on) will make their arguments
  485. work on previous generations of the thread.  If you say something like:
  486.  
  487.      ...
  488.      (1-
  489.       (1-
  490.        ("from" "lars")))
  491.      ...
  492.  
  493.    Then that means "score on the from header of the grandparent of the
  494. current article".  An indirection is quite fast, but it's better to say:
  495.  
  496.      (1-
  497.       (&
  498.        ("from" "Lars")
  499.        ("subject" "Gnus")))
  500.  
  501.    than it is to say:
  502.  
  503.      (&
  504.       (1- ("from" "Lars"))
  505.       (1- ("subject" "Gnus")))
  506.  
  507. 
  508. File: gnus.info,  Node: Score Decays,  Prev: Advanced Scoring,  Up: Scoring
  509.  
  510. Score Decays
  511. ============
  512.  
  513.    You may find that your scores have a tendency to grow without
  514. bounds, especially if you're using adaptive scoring.  If scores get too
  515. big, they lose all meaning--they simply max out and it's difficult to
  516. use them in any sensible way.
  517.  
  518.    Gnus provides a mechanism for decaying scores to help with this
  519. problem.  When score files are loaded and `gnus-decay-scores' is
  520. non-`nil', Gnus will run the score files through the decaying mechanism
  521. thereby lowering the scores of all non-permanent score rules.  The
  522. decay itself if performed by the `gnus-score-decay-function' function,
  523. which is `gnus-decay-score' by default.  Here's the definition of that
  524. function:
  525.  
  526.      (defun gnus-decay-score (score)
  527.        "Decay SCORE according to `gnus-score-decay-constant' and `gnus-score-decay-scale'."
  528.        (floor
  529.         (- score
  530.            (* (if (< score 0) 1 -1)
  531.               (min (abs score)
  532.                    (max gnus-score-decay-constant
  533.                         (* (abs score)
  534.                            gnus-score-decay-scale)))))))
  535.  
  536.    `gnus-score-decay-constant' is 3 by default and
  537. `gnus-score-decay-scale' is 0.05.  This should cause the following:
  538.  
  539.   1. Scores between -3 and 3 will be set to 0 when this function is
  540.      called.
  541.  
  542.   2. Scores with magnitudes between 3 and 60 will be shrunk by 3.
  543.  
  544.   3. Scores with magnitudes greater than 60 will be shrunk by 5% of the
  545.      score.
  546.  
  547.    If you don't like this decay function, write your own.  It is called
  548. with the score to be decayed as its only parameter, and it should return
  549. the new score, which should be an integer.
  550.  
  551.    Gnus will try to decay scores once a day.  If you haven't run Gnus
  552. for four days, Gnus will decay the scores four times, for instance.
  553.  
  554. 
  555. File: gnus.info,  Node: Various,  Next: The End,  Prev: Scoring,  Up: Top
  556.  
  557. Various
  558. *******
  559.  
  560. * Menu:
  561.  
  562. * Process/Prefix::             A convention used by many treatment commands.
  563. * Interactive::                Making Gnus ask you many questions.
  564. * Formatting Variables::       You can specify what buffers should look like.
  565. * Windows Configuration::      Configuring the Gnus buffer windows.
  566. * Compilation::                How to speed Gnus up.
  567. * Mode Lines::                 Displaying information in the mode lines.
  568. * Highlighting and Menus::     Making buffers look all nice and cozy.
  569. * Buttons::                    Get tendonitis in ten easy steps!
  570. * Daemons::                    Gnus can do things behind your back.
  571. * NoCeM::                      How to avoid spam and other fatty foods.
  572. * Undo::                       Some actions can be undone.
  573. * Moderation::                 What to do if you're a moderator.
  574. * XEmacs Enhancements::        There are more pictures and stuff under XEmacs.
  575. * Fuzzy Matching::             What's the big fuzz?
  576. * Thwarting Email Spam::       A how-to on avoiding unsolited commercial email.
  577. * Various Various::            Things that are really various.
  578.  
  579. 
  580. File: gnus.info,  Node: Process/Prefix,  Next: Interactive,  Up: Various
  581.  
  582. Process/Prefix
  583. ==============
  584.  
  585.    Many functions, among them functions for moving, decoding and saving
  586. articles, use what is known as the "Process/Prefix convention".
  587.  
  588.    This is a method for figuring out what articles the user wants the
  589. command to be performed on.
  590.  
  591.    It goes like this:
  592.  
  593.    If the numeric prefix is N, perform the operation on the next N
  594. articles, starting with the current one.  If the numeric prefix is
  595. negative, perform the operation on the previous N articles, starting
  596. with the current one.
  597.  
  598.    If `transient-mark-mode' in non-`nil' and the region is active, all
  599. articles in the region will be worked upon.
  600.  
  601.    If there is no numeric prefix, but some articles are marked with the
  602. process mark, perform the operation on the articles marked with the
  603. process mark.
  604.  
  605.    If there is neither a numeric prefix nor any articles marked with the
  606. process mark, just perform the operation on the current article.
  607.  
  608.    Quite simple, really, but it needs to be made clear so that surprises
  609. are avoided.
  610.  
  611.    Commands that react to the process mark will push the current list of
  612. process marked articles onto a stack and will then clear all process
  613. marked articles.  You can restore the previous configuration with the
  614. `M P y' command (*note Setting Process Marks::.).
  615.  
  616.    One thing that seems to shock & horrify lots of people is that, for
  617. instance, `3 d' does exactly the same as `d' `d' `d'.  Since each `d'
  618. (which marks the current article as read) by default goes to the next
  619. unread article after marking, this means that `3 d' will mark the next
  620. three unread articles as read, no matter what the summary buffer looks
  621. like.  Set `gnus-summary-goto-unread' to `nil' for a more
  622. straightforward action.
  623.  
  624. 
  625. File: gnus.info,  Node: Interactive,  Next: Formatting Variables,  Prev: Process/Prefix,  Up: Various
  626.  
  627. Interactive
  628. ===========
  629.  
  630. `gnus-novice-user'
  631.      If this variable is non-`nil', you are either a newcomer to the
  632.      World of Usenet, or you are very cautious, which is a nice thing
  633.      to be, really.  You will be given questions of the type "Are you
  634.      sure you want to do this?" before doing anything dangerous.  This
  635.      is `t' by default.
  636.  
  637. `gnus-expert-user'
  638.      If this variable is non-`nil', you will never ever be asked any
  639.      questions by Gnus.  It will simply assume you know what you're
  640.      doing, no matter how strange.
  641.  
  642. `gnus-interactive-catchup'
  643.      Require confirmation before catching up a group if non-`nil'.  It
  644.      is `t' by default.
  645.  
  646. `gnus-interactive-exit'
  647.      Require confirmation before exiting Gnus.  This variable is `t' by
  648.      default.
  649.  
  650. 
  651. File: gnus.info,  Node: Formatting Variables,  Next: Windows Configuration,  Prev: Interactive,  Up: Various
  652.  
  653. Formatting Variables
  654. ====================
  655.  
  656.    Throughout this manual you've probably noticed lots of variables
  657. called things like `gnus-group-line-format' and
  658. `gnus-summary-mode-line-format'.  These control how Gnus is to output
  659. lines in the various buffers.  There's quite a lot of them.
  660. Fortunately, they all use the same syntax, so there's not that much to
  661. be annoyed by.
  662.  
  663.    Here's an example format spec (from the group buffer): `%M%S%5y:
  664. %(%g%)\n'.  We see that it is indeed extremely ugly, and that there are
  665. lots of percentages everywhere.
  666.  
  667. * Menu:
  668.  
  669. * Formatting Basics::     A formatting variable is basically a format string.
  670. * Advanced Formatting::   Modifying output in various ways.
  671. * User-Defined Specs::    Having Gnus call your own functions.
  672. * Formatting Fonts::      Making the formatting look colorful and nice.
  673.  
  674.    Currently Gnus uses the following formatting variables:
  675. `gnus-group-line-format', `gnus-summary-line-format',
  676. `gnus-server-line-format', `gnus-topic-line-format',
  677. `gnus-group-mode-line-format', `gnus-summary-mode-line-format',
  678. `gnus-article-mode-line-format', `gnus-server-mode-line-format', and
  679. `gnus-summary-pick-line-format'.
  680.  
  681.    All these format variables can also be arbitrary elisp forms.  In
  682. that case, they will be `eval'ed to insert the required lines.
  683.  
  684.    Gnus includes a command to help you while creating your own format
  685. specs.  `M-x gnus-update-format' will `eval' the current form, update
  686. the spec in question and pop you to a buffer where you can examine the
  687. resulting lisp code to be run to generate the line.
  688.  
  689. 
  690. File: gnus.info,  Node: Formatting Basics,  Next: Advanced Formatting,  Up: Formatting Variables
  691.  
  692. Formatting Basics
  693. -----------------
  694.  
  695.    Each `%' element will be replaced by some string or other when the
  696. buffer in question is generated.  `%5y' means "insert the `y' spec, and
  697. pad with spaces to get a 5-character field".
  698.  
  699.    As with normal C and Emacs Lisp formatting strings, the numerical
  700. modifier between the `%' and the formatting type character will "pad"
  701. the output so that it is always at least that long.  `%5y' will make
  702. the field always (at least) five characters wide by padding with spaces
  703. to the left.  If you say `%-5y', it will pad to the right instead.
  704.  
  705.    You may also wish to limit the length of the field to protect against
  706. particularly wide values.  For that you can say `%4,6y', which means
  707. that the field will never be more than 6 characters wide and never less
  708. than 4 characters wide.
  709.  
  710. 
  711. File: gnus.info,  Node: Advanced Formatting,  Next: User-Defined Specs,  Prev: Formatting Basics,  Up: Formatting Variables
  712.  
  713. Advanced Formatting
  714. -------------------
  715.  
  716.    It is frequently useful to post-process the fields in some way.
  717. Padding, limiting, cutting off parts and suppressing certain values can
  718. be achieved by using "tilde modifiers".  A typical tilde spec might
  719. look like `%~(cut 3)~(ignore "0")y'.
  720.  
  721.    These are the legal modifiers:
  722.  
  723. `pad'
  724. `pad-left'
  725.      Pad the field to the left with spaces until it reaches the required
  726.      length.
  727.  
  728. `pad-right'
  729.      Pad the field to the right with spaces until it reaches the
  730.      required length.
  731.  
  732. `max'
  733. `max-left'
  734.      Cut off characters from the left until it reaches the specified
  735.      length.
  736.  
  737. `max-right'
  738.      Cut off characters from the right until it reaches the specified
  739.      length.
  740.  
  741. `cut'
  742. `cut-left'
  743.      Cut off the specified number of characters from the left.
  744.  
  745. `cut-right'
  746.      Cut off the specified number of characters from the right.
  747.  
  748. `ignore'
  749.      Return an empty string if the field is equal to the specified
  750.      value.
  751.  
  752. `form'
  753.      Use the specified form as the field value when the `@' spec is
  754.      used.
  755.  
  756.    Let's take an example.  The `%o' spec in the summary mode lines will
  757. return a date in compact ISO8601 format--`19960809T230410'.  This is
  758. quite a mouthful, so we want to shave off the century number and the
  759. time, leaving us with a six-character date.  That would be `%~(cut-left
  760. 2)~(max-right 6)~(pad 6)o'.  (Cutting is done before maxing, and we
  761. need the padding to ensure that the date is never less than 6
  762. characters to make it look nice in columns.)
  763.  
  764.    Ignoring is done first; then cutting; then maxing; and then as the
  765. very last operation, padding.
  766.  
  767.    If you use lots of these advanced thingies, you'll find that Gnus
  768. gets quite slow.  This can be helped enormously by running `M-x
  769. gnus-compile' when you are satisfied with the look of your lines.
  770. *Note Compilation::.
  771.  
  772. 
  773. File: gnus.info,  Node: User-Defined Specs,  Next: Formatting Fonts,  Prev: Advanced Formatting,  Up: Formatting Variables
  774.  
  775. User-Defined Specs
  776. ------------------
  777.  
  778.    All the specs allow for inserting user defined specifiers--`u'.  The
  779. next character in the format string should be a letter.  Gnus will call
  780. the function `gnus-user-format-function-'`X', where `X' is the letter
  781. following `%u'.  The function will be passed a single parameter--what
  782. the parameter means depends on what buffer it's being called from.  The
  783. function should return a string, which will be inserted into the buffer
  784. just like information from any other specifier.  This function may also
  785. be called with dummy values, so it should protect against that.
  786.  
  787.    You can also use tilde modifiers (*note Advanced Formatting::. to
  788. achieve much the same without defining new functions.  Here's an
  789. example: `%~(form (count-lines (point-min) (point)))@'.  The form given
  790. here will be evaluated to yield the current line number, and then
  791. inserted.
  792.  
  793. 
  794. File: gnus.info,  Node: Formatting Fonts,  Prev: User-Defined Specs,  Up: Formatting Variables
  795.  
  796. Formatting Fonts
  797. ----------------
  798.  
  799.    There are specs for highlighting, and these are shared by all the
  800. format variables.  Text inside the `%(' and `%)' specifiers will get
  801. the special `mouse-face' property set, which means that it will be
  802. highlighted (with `gnus-mouse-face') when you put the mouse pointer
  803. over it.
  804.  
  805.    Text inside the `%[' and `%]' specifiers will have their normal
  806. faces set using `gnus-face-0', which is `bold' by default.  If you say
  807. `%1[', you'll get `gnus-face-1' instead, and so on.  Create as many
  808. faces as you wish.  The same goes for the `mouse-face' specs--you can
  809. say `%3(hello%)' to have `hello' mouse-highlighted with
  810. `gnus-mouse-face-3'.
  811.  
  812.    Here's an alternative recipe for the group buffer:
  813.  
  814.      ;; Create three face types.
  815.      (setq gnus-face-1 'bold)
  816.      (setq gnus-face-3 'italic)
  817.      
  818.      ;; We want the article count to be in
  819.      ;; a bold and green face.  So we create
  820.      ;; a new face called `my-green-bold'.
  821.      (copy-face 'bold 'my-green-bold)
  822.      ;; Set the color.
  823.      (set-face-foreground 'my-green-bold "ForestGreen")
  824.      (setq gnus-face-2 'my-green-bold)
  825.      
  826.      ;; Set the new & fancy format.
  827.      (setq gnus-group-line-format
  828.            "%M%S%3{%5y%}%2[:%] %(%1{%g%}%)\n")
  829.  
  830.    I'm sure you'll be able to use this scheme to create totally
  831. unreadable and extremely vulgar displays.  Have fun!
  832.  
  833.    Note that the `%(' specs (and friends) do not make any sense on the
  834. mode-line variables.
  835.  
  836. 
  837. File: gnus.info,  Node: Windows Configuration,  Next: Compilation,  Prev: Formatting Variables,  Up: Various
  838.  
  839. Windows Configuration
  840. =====================
  841.  
  842.    No, there's nothing here about X, so be quiet.
  843.  
  844.    If `gnus-use-full-window' non-`nil', Gnus will delete all other
  845. windows and occupy the entire Emacs screen by itself.  It is `t' by
  846. default.
  847.  
  848.    `gnus-buffer-configuration' describes how much space each Gnus
  849. buffer should be given.  Here's an excerpt of this variable:
  850.  
  851.      ((group (vertical 1.0 (group 1.0 point)
  852.                            (if gnus-carpal (group-carpal 4))))
  853.       (article (vertical 1.0 (summary 0.25 point)
  854.                              (article 1.0))))
  855.  
  856.    This is an alist.  The "key" is a symbol that names some action or
  857. other.  For instance, when displaying the group buffer, the window
  858. configuration function will use `group' as the key.  A full list of
  859. possible names is listed below.
  860.  
  861.    The "value" (i.e., the "split") says how much space each buffer
  862. should occupy.  To take the `article' split as an example -
  863.  
  864.      (article (vertical 1.0 (summary 0.25 point)
  865.                             (article 1.0)))
  866.  
  867.    This "split" says that the summary buffer should occupy 25% of upper
  868. half of the screen, and that it is placed over the article buffer.  As
  869. you may have noticed, 100% + 25% is actually 125% (yup, I saw y'all
  870. reaching for that calculator there).  However, the special number `1.0'
  871. is used to signal that this buffer should soak up all the rest of the
  872. space available after the rest of the buffers have taken whatever they
  873. need.  There should be only one buffer with the `1.0' size spec per
  874. split.
  875.  
  876.    Point will be put in the buffer that has the optional third element
  877. `point'.
  878.  
  879.    Here's a more complicated example:
  880.  
  881.      (article (vertical 1.0 (group 4)
  882.                             (summary 0.25 point)
  883.                             (if gnus-carpal (summary-carpal 4))
  884.                             (article 1.0)))
  885.  
  886.    If the size spec is an integer instead of a floating point number,
  887. then that number will be used to say how many lines a buffer should
  888. occupy, not a percentage.
  889.  
  890.    If the "split" looks like something that can be `eval'ed (to be
  891. precise--if the `car' of the split is a function or a subr), this split
  892. will be `eval'ed.  If the result is non-`nil', it will be used as a
  893. split.  This means that there will be three buffers if `gnus-carpal' is
  894. `nil', and four buffers if `gnus-carpal' is non-`nil'.
  895.  
  896.    Not complicated enough for you?  Well, try this on for size:
  897.  
  898.      (article (horizontal 1.0
  899.                   (vertical 0.5
  900.                       (group 1.0)
  901.                       (gnus-carpal 4))
  902.                   (vertical 1.0
  903.                       (summary 0.25 point)
  904.                       (summary-carpal 4)
  905.                       (article 1.0))))
  906.  
  907.    Whoops.  Two buffers with the mystery 100% tag.  And what's that
  908. `horizontal' thingie?
  909.  
  910.    If the first element in one of the split is `horizontal', Gnus will
  911. split the window horizontally, giving you two windows side-by-side.
  912. Inside each of these strips you may carry on all you like in the normal
  913. fashion.  The number following `horizontal' says what percentage of the
  914. screen is to be given to this strip.
  915.  
  916.    For each split, there *must* be one element that has the 100% tag.
  917. The splitting is never accurate, and this buffer will eat any leftover
  918. lines from the splits.
  919.  
  920.    To be slightly more formal, here's a definition of what a legal split
  921. may look like:
  922.  
  923.      split       = frame | horizontal | vertical | buffer | form
  924.      frame       = "(frame " size *split ")"
  925.      horizontal  = "(horizontal " size *split ")"
  926.      vertical    = "(vertical " size *split ")"
  927.      buffer      = "(" buffer-name " " size *[ "point" ] ")"
  928.      size        = number | frame-params
  929.      buffer-name = group | article | summary ...
  930.  
  931.    The limitations are that the `frame' split can only appear as the
  932. top-level split.  FORM should be an Emacs Lisp form that should return
  933. a valid split.  We see that each split is fully recursive, and may
  934. contain any number of `vertical' and `horizontal' splits.
  935.  
  936.    Finding the right sizes can be a bit complicated.  No window may be
  937. less than `gnus-window-min-height' (default 1) characters high, and all
  938. windows must be at least `gnus-window-min-width' (default 1) characters
  939. wide.  Gnus will try to enforce this before applying the splits.  If
  940. you want to use the normal Emacs window width/height limit, you can
  941. just set these two variables to `nil'.
  942.  
  943.    If you're not familiar with Emacs terminology, `horizontal' and
  944. `vertical' splits may work the opposite way of what you'd expect.
  945. Windows inside a `horizontal' split are shown side-by-side, and windows
  946. within a `vertical' split are shown above each other.
  947.  
  948.    If you want to experiment with window placement, a good tip is to
  949. call `gnus-configure-frame' directly with a split.  This is the function
  950. that does all the real work when splitting buffers.  Below is a pretty
  951. nonsensical configuration with 5 windows; two for the group buffer and
  952. three for the article buffer.  (I said it was nonsensical.)  If you
  953. `eval' the statement below, you can get an idea of how that would look
  954. straight away, without going through the normal Gnus channels.  Play
  955. with it until you're satisfied, and then use `gnus-add-configuration'
  956. to add your new creation to the buffer configuration list.
  957.  
  958.      (gnus-configure-frame
  959.       '(horizontal 1.0
  960.          (vertical 10
  961.            (group 1.0)
  962.            (article 0.3 point))
  963.          (vertical 1.0
  964.            (article 1.0)
  965.            (horizontal 4
  966.              (group 1.0)
  967.              (article 10)))))
  968.  
  969.    You might want to have several frames as well.  No prob--just use the
  970. `frame' split:
  971.  
  972.      (gnus-configure-frame
  973.       '(frame 1.0
  974.               (vertical 1.0
  975.                         (summary 0.25 point)
  976.                         (article 1.0))
  977.               (vertical ((height . 5) (width . 15)
  978.                          (user-position . t)
  979.                          (left . -1) (top . 1))
  980.                         (picon 1.0))))
  981.  
  982.    This split will result in the familiar summary/article window
  983. configuration in the first (or "main") frame, while a small additional
  984. frame will be created where picons will be shown.  As you can see,
  985. instead of the normal `1.0' top-level spec, each additional split
  986. should have a frame parameter alist as the size spec.  *Note Frame
  987. Parameters: (elisp)Frame Parameters.  Under XEmacs, a frame property
  988. list will be accepted, too--for instance, `(height 5 width 15 left -1
  989. top 1)' is such a plist.
  990.  
  991.    Here's a list of all possible keys for `gnus-buffer-configuration':
  992.  
  993.    `group', `summary', `article', `server', `browse', `message',
  994. `pick', `info', `summary-faq', `edit-group', `edit-server',
  995. `edit-score', `post', `reply', `forward', `reply-yank', `mail-bounce',
  996. `draft', `pipe', `bug', `compose-bounce', and `score-trace'.
  997.  
  998.    Note that the `message' key is used for both `gnus-group-mail' and
  999. `gnus-summary-mail-other-window'.  If it is desirable to distinguish
  1000. between the two, something like this might be used:
  1001.  
  1002.      (message (horizontal 1.0
  1003.                           (vertical 1.0 (message 1.0 point))
  1004.                           (vertical 0.24
  1005.                                     (if (buffer-live-p gnus-summary-buffer)
  1006.                                         '(summary 0.5))
  1007.                                     (group 1.0)))))
  1008.  
  1009.    Since the `gnus-buffer-configuration' variable is so long and
  1010. complicated, there's a function you can use to ease changing the config
  1011. of a single setting: `gnus-add-configuration'.  If, for instance, you
  1012. want to change the `article' setting, you could say:
  1013.  
  1014.      (gnus-add-configuration
  1015.       '(article (vertical 1.0
  1016.                     (group 4)
  1017.                     (summary .25 point)
  1018.                     (article 1.0))))
  1019.  
  1020.    You'd typically stick these `gnus-add-configuration' calls in your
  1021. `.gnus.el' file or in some startup hook--they should be run after Gnus
  1022. has been loaded.
  1023.  
  1024.    If all windows mentioned in the configuration are already visible,
  1025. Gnus won't change the window configuration.  If you always want to
  1026. force the "right" window configuration, you can set
  1027. `gnus-always-force-window-configuration' to non-`nil'.
  1028.  
  1029. 
  1030. File: gnus.info,  Node: Compilation,  Next: Mode Lines,  Prev: Windows Configuration,  Up: Various
  1031.  
  1032. Compilation
  1033. ===========
  1034.  
  1035.    Remember all those line format specification variables?
  1036. `gnus-summary-line-format', `gnus-group-line-format', and so on.  Now,
  1037. Gnus will of course heed whatever these variables are, but,
  1038. unfortunately, changing them will mean a quite significant slow-down.
  1039. (The default values of these variables have byte-compiled functions
  1040. associated with them, while the user-generated versions do not, of
  1041. course.)
  1042.  
  1043.    To help with this, you can run `M-x gnus-compile' after you've
  1044. fiddled around with the variables and feel that you're (kind of)
  1045. satisfied.  This will result in the new specs being byte-compiled, and
  1046. you'll get top speed again.  Gnus will save these compiled specs in the
  1047. `.newsrc.eld' file.  (User-defined functions aren't compiled by this
  1048. function, though--you should compile them yourself by sticking them
  1049. into the `.gnus.el' file and byte-compiling that file.)
  1050.  
  1051. 
  1052. File: gnus.info,  Node: Mode Lines,  Next: Highlighting and Menus,  Prev: Compilation,  Up: Various
  1053.  
  1054. Mode Lines
  1055. ==========
  1056.  
  1057.    `gnus-updated-mode-lines' says what buffers should keep their mode
  1058. lines updated.  It is a list of symbols.  Supported symbols include
  1059. `group', `article', `summary', `server', `browse', and `tree'.  If the
  1060. corresponding symbol is present, Gnus will keep that mode line updated
  1061. with information that may be pertinent.  If this variable is `nil',
  1062. screen refresh may be quicker.
  1063.  
  1064.    By default, Gnus displays information on the current article in the
  1065. mode lines of the summary and article buffers.  The information Gnus
  1066. wishes to display (e.g. the subject of the article) is often longer
  1067. than the mode lines, and therefore have to be cut off at some point.
  1068. The `gnus-mode-non-string-length' variable says how long the other
  1069. elements on the line is (i.e., the non-info part).  If you put
  1070. additional elements on the mode line (e.g. a clock), you should modify
  1071. this variable:
  1072.  
  1073.      (add-hook 'display-time-hook
  1074.                (lambda () (setq gnus-mode-non-string-length
  1075.                                 (+ 21
  1076.                                    (if line-number-mode 5 0)
  1077.                                    (if column-number-mode 4 0)
  1078.                                    (length display-time-string)))))
  1079.  
  1080.    If this variable is `nil' (which is the default), the mode line
  1081. strings won't be chopped off, and they won't be padded either.  Note
  1082. that the default is unlikely to be desirable, as even the percentage
  1083. complete in the buffer may be crowded off the mode line; the user should
  1084. configure this variable appropriately for her configuration.
  1085.  
  1086. 
  1087. File: gnus.info,  Node: Highlighting and Menus,  Next: Buttons,  Prev: Mode Lines,  Up: Various
  1088.  
  1089. Highlighting and Menus
  1090. ======================
  1091.  
  1092.    The `gnus-visual' variable controls most of the Gnus-prettifying
  1093. aspects.  If `nil', Gnus won't attempt to create menus or use fancy
  1094. colors or fonts.  This will also inhibit loading the `gnus-vis.el' file.
  1095.  
  1096.    This variable can be a list of visual properties that are enabled.
  1097. The following elements are legal, and are all included by default:
  1098.  
  1099. `group-highlight'
  1100.      Do highlights in the group buffer.
  1101.  
  1102. `summary-highlight'
  1103.      Do highlights in the summary buffer.
  1104.  
  1105. `article-highlight'
  1106.      Do highlights in the article buffer.
  1107.  
  1108. `highlight'
  1109.      Turn on highlighting in all buffers.
  1110.  
  1111. `group-menu'
  1112.      Create menus in the group buffer.
  1113.  
  1114. `summary-menu'
  1115.      Create menus in the summary buffers.
  1116.  
  1117. `article-menu'
  1118.      Create menus in the article buffer.
  1119.  
  1120. `browse-menu'
  1121.      Create menus in the browse buffer.
  1122.  
  1123. `server-menu'
  1124.      Create menus in the server buffer.
  1125.  
  1126. `score-menu'
  1127.      Create menus in the score buffers.
  1128.  
  1129. `menu'
  1130.      Create menus in all buffers.
  1131.  
  1132.    So if you only want highlighting in the article buffer and menus in
  1133. all buffers, you could say something like:
  1134.  
  1135.      (setq gnus-visual '(article-highlight menu))
  1136.  
  1137.    If you want highlighting only and no menus whatsoever, you'd say:
  1138.  
  1139.      (setq gnus-visual '(highlight))
  1140.  
  1141.    If `gnus-visual' is `t', highlighting and menus will be used in all
  1142. Gnus buffers.
  1143.  
  1144.    Other general variables that influence the look of all buffers
  1145. include:
  1146.  
  1147. `gnus-mouse-face'
  1148.      This is the face (i.e., font) used for mouse highlighting in Gnus.
  1149.      No mouse highlights will be done if `gnus-visual' is `nil'.
  1150.  
  1151.    There are hooks associated with the creation of all the different
  1152. menus:
  1153.  
  1154. `gnus-article-menu-hook'
  1155.      Hook called after creating the article mode menu.
  1156.  
  1157. `gnus-group-menu-hook'
  1158.      Hook called after creating the group mode menu.
  1159.  
  1160. `gnus-summary-menu-hook'
  1161.      Hook called after creating the summary mode menu.
  1162.  
  1163. `gnus-server-menu-hook'
  1164.      Hook called after creating the server mode menu.
  1165.  
  1166. `gnus-browse-menu-hook'
  1167.      Hook called after creating the browse mode menu.
  1168.  
  1169. `gnus-score-menu-hook'
  1170.      Hook called after creating the score mode menu.
  1171.  
  1172. 
  1173. File: gnus.info,  Node: Buttons,  Next: Daemons,  Prev: Highlighting and Menus,  Up: Various
  1174.  
  1175. Buttons
  1176. =======
  1177.  
  1178.    Those new-fangled "mouse" contraptions is very popular with the
  1179. young, hep kids who don't want to learn the proper way to do things
  1180. these days.  Why, I remember way back in the summer of '89, when I was
  1181. using Emacs on a Tops 20 system.  Three hundred users on one single
  1182. machine, and every user was running Simula compilers.  Bah!
  1183.  
  1184.    Right.
  1185.  
  1186.    Well, you can make Gnus display bufferfuls of buttons you can click
  1187. to do anything by setting `gnus-carpal' to `t'.  Pretty simple, really.
  1188. Tell the chiropractor I sent you.
  1189.  
  1190. `gnus-carpal-mode-hook'
  1191.      Hook run in all carpal mode buffers.
  1192.  
  1193. `gnus-carpal-button-face'
  1194.      Face used on buttons.
  1195.  
  1196. `gnus-carpal-header-face'
  1197.      Face used on carpal buffer headers.
  1198.  
  1199. `gnus-carpal-group-buffer-buttons'
  1200.      Buttons in the group buffer.
  1201.  
  1202. `gnus-carpal-summary-buffer-buttons'
  1203.      Buttons in the summary buffer.
  1204.  
  1205. `gnus-carpal-server-buffer-buttons'
  1206.      Buttons in the server buffer.
  1207.  
  1208. `gnus-carpal-browse-buffer-buttons'
  1209.      Buttons in the browse buffer.
  1210.  
  1211.    All the `buttons' variables are lists.  The elements in these list
  1212. are either cons cells where the `car' contains a text to be displayed
  1213. and the `cdr' contains a function symbol, or a simple string.
  1214.  
  1215. 
  1216. File: gnus.info,  Node: Daemons,  Next: NoCeM,  Prev: Buttons,  Up: Various
  1217.  
  1218. Daemons
  1219. =======
  1220.  
  1221.    Gnus, being larger than any program ever written (allegedly), does
  1222. lots of strange stuff that you may wish to have done while you're not
  1223. present.  For instance, you may want it to check for new mail once in a
  1224. while.  Or you may want it to close down all connections to all servers
  1225. when you leave Emacs idle.  And stuff like that.
  1226.  
  1227.    Gnus will let you do stuff like that by defining various "handlers".
  1228. Each handler consists of three elements:  A FUNCTION, a TIME, and an
  1229. IDLE parameter.
  1230.  
  1231.    Here's an example of a handler that closes connections when Emacs has
  1232. been idle for thirty minutes:
  1233.  
  1234.      (gnus-demon-close-connections nil 30)
  1235.  
  1236.    Here's a handler that scans for PGP headers every hour when Emacs is
  1237. idle:
  1238.  
  1239.      (gnus-demon-scan-pgp 60 t)
  1240.  
  1241.    This TIME parameter and than IDLE parameter work together in a
  1242. strange, but wonderful fashion.  Basically, if IDLE is `nil', then the
  1243. function will be called every TIME minutes.
  1244.  
  1245.    If IDLE is `t', then the function will be called after TIME minutes
  1246. only if Emacs is idle.  So if Emacs is never idle, the function will
  1247. never be called.  But once Emacs goes idle, the function will be called
  1248. every TIME minutes.
  1249.  
  1250.    If IDLE is a number and TIME is a number, the function will be
  1251. called every TIME minutes only when Emacs has been idle for IDLE
  1252. minutes.
  1253.  
  1254.    If IDLE is a number and TIME is `nil', the function will be called
  1255. once every time Emacs has been idle for IDLE minutes.
  1256.  
  1257.    And if TIME is a string, it should look like `07:31', and the
  1258. function will then be called once every day somewhere near that time.
  1259. Modified by the IDLE parameter, of course.
  1260.  
  1261.    (When I say "minute" here, I really mean `gnus-demon-timestep'
  1262. seconds.  This is 60 by default.  If you change that variable, all the
  1263. timings in the handlers will be affected.)
  1264.  
  1265.    To set the whole thing in motion, though, you have to set
  1266. `gnus-use-demon' to `t'.
  1267.  
  1268.    So, if you want to add a handler, you could put something like this
  1269. in your `.gnus' file:
  1270.  
  1271.      (gnus-demon-add-handler 'gnus-demon-close-connections 30 t)
  1272.  
  1273.    Some ready-made functions to do this have been created:
  1274. `gnus-demon-add-nocem', `gnus-demon-add-disconnection',
  1275. `gnus-demon-add-scan-timestamps', `gnus-demon-add-rescan', and
  1276. `gnus-demon-add-scanmail'.  Just put those functions in your `.gnus' if
  1277. you want those abilities.
  1278.  
  1279.    If you add handlers to `gnus-demon-handlers' directly, you should
  1280. run `gnus-demon-init' to make the changes take hold.  To cancel all
  1281. daemons, you can use the `gnus-demon-cancel' function.
  1282.  
  1283.    Note that adding daemons can be pretty naughty if you overdo it.
  1284. Adding functions that scan all news and mail from all servers every two
  1285. seconds is a sure-fire way of getting booted off any respectable
  1286. system.  So behave.
  1287.  
  1288.